package com.spzx.product.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.spzx.product.domain.SkuStock;
import org.apache.ibatis.annotations.Param;

/**
 * 商品skuMapper接口
 *
 */
public interface SkuStockMapper extends BaseMapper<SkuStock> {

    /**
     * 检查库存，并锁定数据（for update行锁）
     * @param skuId
     * @param skuNum
     * @return
     */
    SkuStock check(@Param("skuId") Long skuId, @Param("skuNum") Integer skuNum);

    /**
     * 锁定库存
     * @param skuId 商品skuId
     * @param skuNum 锁定数量
     * @return 是否锁定成功，1表示成功,0表示失败
     */
    int lock(@Param("skuId") Long skuId, @Param("skuNum") Integer skuNum);

    /**
     * 解锁库存
     * @param skuId 商品skuId
     * @param skuNum 锁定数量
     * @return 是否解锁成功，1表示成功,0表示失败
     */
    int unlock(@Param("skuId") Long skuId, @Param("skuNum") Integer skuNum);

    /**
     * 减库存
     * @param skuId 商品skuId
     * @param skuNum 锁定数量
     * @return 是否解锁成功，1表示成功,0表示失败
     */
    int minus(@Param("skuId") Long skuId, @Param("skuNum") Integer skuNum);
}